package com.fdb.efp.flow.service.facade;

import java.util.List;

import com.fdb.efp.flow.service.vo.InstFlowTaskVO;

/**
 * 
 * 
 * 
 * @author Cytus_
 * @since 2018年5月8日 下午7:21:54
 * @version 1.0
 *
 */
public interface InstFlowTaskService {
	
	/**
	 * 根据任务节点编号和状态查询
	 * @param vo
	 * @return
	 */
	public InstFlowTaskVO queryTaskNodeIdAndStatus(InstFlowTaskVO vo);
	
	/**
	 * 根据bizNodeId批量实例化任务信息
	 * @param vo
	 * @return
	 */
	public int insertInitTaskByNodeId(InstFlowTaskVO vo);
	
	/**
	 * 根据nodeInstanceId查询待执行的第一个任务
	 * @param nodeInstanceId
	 * @return
	 */
	public InstFlowTaskVO queryFirstTaskByNodeInstId(String nodeInstanceId);
	
	/**
	 * 根据前置任务编号和nodeInstanceId查询当前该执行任务
	 * @param vo
	 * @return
	 */
	public InstFlowTaskVO queryTaskByPreTaskAndInstId(InstFlowTaskVO vo);
	
	/**
	 * 更新任务状态通过nodeInstanceId和taskId
	 * @param vo
	 * @return
	 */
	public int updateTaskStateByNodeTaskId(InstFlowTaskVO vo);
	
	/**
	 * 通过nodeInstanceId和taskId查询任务信息
	 * @param vo
	 * @return
	 */
	public InstFlowTaskVO queryTaskByNodeTaskId(InstFlowTaskVO vo);
	
	/**
	 * 通过nodeinstid统计数量
	 * @param instNodeId
	 * @return
	 */
	public int countTaskByNodeInstId(String instNodeId);
	
	/**
	 * 查询
	 * @param instNodeId
	 * @return
	 */
	public List<InstFlowTaskVO> queryPageShowPluginTaskInfoByInstNodeId(String instNodeId);
	
	
	/**
	 * 根据instNodeId查询
	 * @param instNodeId
	 * @return
	 */
	public List<InstFlowTaskVO> queryByInstNodeId(String instNodeId);

	public int deleteByPk(String instNodeId);

}
